#pragma once

//链表结点
struct Node
{
    void* addr;            //内容地址
    Node* next;            //下一个结点地址
    Node();
};

//链表
class AddrLinkedList
{
public:
    Node* head;             //头结点
    Node* tail;             //尾结点
    AddrLinkedList();
    ~AddrLinkedList();
    void push(void* addr);  //增加一个结点
    void* pop();            //弹出一个结点，并返回数据
    void* top();            //返回项部结点的数据
    void clear();           //清除所有结点
    void remove(void*);     //删除某个匹配数据的结点
    int size();             //返回结点个数
    bool isEmpty();         //是否是空的链表
private:
	int count;              //结点个数
};
